```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Spring 注解大全 | 技术小馆</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            background-color: #f8fafc;
            color: #1e293b;
        }
        .hero-gradient {
            background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
        }
        .annotation-card {
            transition: all 0.3s ease;
            border-left: 4px solid #4f46e5;
        }
        .annotation-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
        }
        .code-block {
            background-color: #1e293b;
            color: #e2e8f0;
            border-radius: 0.5rem;
        }
        .mermaid {
            background-color: white;
            border-radius: 0.5rem;
            padding: 1rem;
            box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
        }
        .footer-link:hover {
            color: #a5b4fc;
        }
    </style>
</head>
<body>
    <!-- 导航栏 -->
    <nav class="bg-white shadow-sm">
        <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
            <div class="flex justify-between h-16">
                <div class="flex">
                    <div class="flex-shrink-0 flex items-center">
                        <i class="fas fa-code text-indigo-600 text-2xl"></i>
                        <span class="ml-2 text-xl font-bold text-gray-900">Spring 注解大全</span>
                    </div>
                </div>
                <div class="hidden sm:ml-6 sm:flex sm:items-center">
                    <a href="http://www.yuque.com/jtostring" class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-indigo-600 hover:bg-gray-100">技术小馆</a>
                </div>
            </div>
        </div>
    </nav>

    <!-- Hero 模块 -->
    <div class="hero-gradient">
        <div class="max-w-7xl mx-auto py-16 px-4 sm:py-24 sm:px-6 lg:px-8 text-center">
            <h1 class="text-4xl font-extrabold tracking-tight text-white sm:text-5xl lg:text-6xl">
                Spring 核心注解详解
            </h1>
            <p class="mt-6 max-w-2xl mx-auto text-xl text-indigo-100">
                全面解析 Spring 框架中最常用的注解及其使用场景
            </p>
        </div>
    </div>

    <!-- 主要内容区域 -->
    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
        <!-- 介绍部分 -->
        <div class="bg-white rounded-xl shadow-md overflow-hidden p-6 mb-12">
            <div class="flex items-center">
                <div class="p-3 bg-indigo-100 rounded-lg mr-4">
                    <i class="fas fa-info-circle text-indigo-600 text-xl"></i>
                </div>
                <h2 class="text-2xl font-bold text-gray-800">Spring 注解概述</h2>
            </div>
            <p class="mt-4 text-gray-600 leading-relaxed">
                Spring 框架通过注解大大简化了 Java 开发，减少了 XML 配置。注解提供了一种声明式编程方式，能够让开发者更专注于业务逻辑的实现。本指南涵盖了 Spring 核心注解及其典型用法。
            </p>
        </div>

        <!-- 分类图表 -->
        <div class="mb-12">
            <h2 class="text-2xl font-bold text-gray-800 mb-6 flex items-center">
                <i class="fas fa-project-diagram text-indigo-500 mr-2"></i> Spring 注解分类关系图
            </h2>
            <div class="mermaid">
                graph TD
                    A[Spring 注解] --> B[核心注解]
                    A --> C[Web MVC 注解]
                    A --> D[数据访问注解]
                    A --> E[事务管理注解]
                    A --> F[配置注解]
                    
                    B --> B1[@Autowired]
                    B --> B2[@Component]
                    B --> B3[@Configuration]
                    B --> B4[@Value]
                    
                    C --> C1[@Controller]
                    C --> C2[@RequestMapping]
                    C --> C3[@ResponseBody]
                    C --> C4[@PathVariable]
                    
                    D --> D1[@Repository]
                    D --> D2[@Transactional]
                    
                    E --> E1[@EnableTransactionManagement]
                    
                    F --> F1[@Configuration]
                    F --> F2[@Bean]
                    F --> F3[@Profile]
            </div>
        </div>

        <!-- 注解列表 -->
        <div class="grid md:grid-cols-2 gap-8">
            <!-- @Autowired -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-plug text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Autowired</h3>
                        <p class="mt-1 text-sm text-gray-500">自动装配依赖项</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    使用在构造函数、属性或方法上，Spring 会自动解析并注入对应的依赖项。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">// Autowiring through constructor
@Autowired
public ExampleClass(Dependency dependency) {
    this.dependency = dependency;
}

// Autowiring through field
@Autowired
private Dependency dependency;

// Autowiring through setter method
@Autowired
public void setDependency(Dependency dependency) {
    this.dependency = dependency;
}</code></pre>
                </div>
            </div>

            <!-- @Component -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-cube text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Component</h3>
                        <p class="mt-1 text-sm text-gray-500">声明为 Spring 组件</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    将一个类标识为 Spring 管理的组件。通常与自动装配配合使用。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Component
public class ExampleComponent {
    // Class definition
}</code></pre>
                </div>
            </div>

            <!-- @Controller -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-laptop-code text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Controller</h3>
                        <p class="mt-1 text-sm text-gray-500">Spring MVC 控制器</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    标识一个类为 Spring MVC 的控制器组件。用于处理用户请求并返回响应。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Controller
public class ExampleController {
    @RequestMapping("/example")
    public String handleRequest() {
        // Handle request and return a view
        return "view";
    }
}</code></pre>
                </div>
            </div>

            <!-- @Service -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-cogs text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Service</h3>
                        <p class="mt-1 text-sm text-gray-500">业务服务层组件</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    标识一个类为服务组件，通常在业务逻辑层使用。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Service
public class ExampleService {
    // Class definition
}</code></pre>
                </div>
            </div>

            <!-- @Repository -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-database text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Repository</h3>
                        <p class="mt-1 text-sm text-gray-500">数据访问层组件</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    标识一个类为数据访问组件，通常在数据访问层使用。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Repository
public class ExampleRepository {
    // Class definition
}</code></pre>
                </div>
            </div>

            <!-- @Configuration -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-sliders-h text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Configuration</h3>
                        <p class="mt-1 text-sm text-gray-500">配置类声明</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    标识一个类为配置类，用于声明 Bean 的创建和其他配置。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Configuration
public class AppConfig {
    // Bean configurations
    @Bean
    public ExampleBean exampleBean() {
        return new ExampleBean();
    }
}</code></pre>
                </div>
            </div>

            <!-- @RequestMapping -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-route text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@RequestMapping</h3>
                        <p class="mt-1 text-sm text-gray-500">请求映射</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于映射请求的 URL 到方法或控制器类。可以指定请求的 HTTP 方法、路径等。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Controller
public class ExampleController {
    @RequestMapping("/example")
    public String handleRequest() {
        // Handle request and return a view
        return "view";
    }
}

@RequestMapping(value = "/example/{id}", method = RequestMethod.GET)
public String handleRequest(@PathVariable("id") int id) {
    // Handle request with a path variable and return a view
    return "view";
}</code></pre>
                </div>
            </div>

            <!-- @PathVariable -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-link text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@PathVariable</h3>
                        <p class="mt-1 text-sm text-gray-500">路径变量绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将 URL 中的参数绑定到方法的参数。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@RequestMapping("/example/{id}")
public String handleRequest(@PathVariable("id") int id) {
    // Use the 'id' parameter to handle the request and return a view
    return "view";
}</code></pre>
                </div>
            </div>

            <!-- 其他注解... -->
            <!-- @RequestBody -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-arrow-right text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@RequestBody</h3>
                        <p class="mt-1 text-sm text-gray-500">请求体绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将 HTTP 请求的主体部分绑定到方法的参数。通常用于接收 JSON 或 XML 格式的请求数据。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@RequestMapping(value = "/example", method = RequestMethod.POST)
public String handleRequest(@RequestBody ExampleObject exampleObject) {
    // Handle the request body data and return a view
    return "view";
}</code></pre>
                </div>
            </div>

            <!-- @ResponseBody -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-arrow-left text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@ResponseBody</h3>
                        <p class="mt-1 text-sm text-gray-500">响应体绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将方法的返回值直接写入 HTTP 响应的主体部分。通常用于返回 JSON 或 XML 格式的响应数据。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Controller
public class ExampleController {
    @RequestMapping("/example")
    @ResponseBody
    public ExampleObject handleRequest() {
        // Generate and return the response data
        return new ExampleObject();
    }
}</code></pre>
                </div>
            </div>

            <!-- @Transactional -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-exchange-alt text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Transactional</h3>
                        <p class="mt-1 text-sm text-gray-500">事务管理</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    标识一个方法或类需要事务管理。在方法上使用时，表示该方法需要在事务内执行。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Transactional
public void exampleMethod() {
    // Method implementation with transactional behavior
}</code></pre>
                </div>
            </div>

            <!-- @Value -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-tag text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Value</h3>
                        <p class="mt-1 text-sm text-gray-500">属性注入</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于注入配置属性的值。可以将属性值直接注入到变量中。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Value("${property.key}")
private String propertyValue;</code></pre>
                </div>
            </div>

            <!-- @Qualifier -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-filter text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Qualifier</h3>
                        <p class="mt-1 text-sm text-gray-500">限定符</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    配合 @Autowired 使用，用于指定注入的 Bean 的名称或限定符。当存在多个相同类型的 Bean 时，可以通过指定名称或限定符来选择注入的 Bean。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Autowired
@Qualifier("beanName")
private BeanType bean;</code></pre>
                </div>
            </div>

            <!-- @Profile -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-layer-group text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Profile</h3>
                        <p class="mt-1 text-sm text-gray-500">环境配置</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于根据环境配置选择性地加载 Bean。可以根据不同的环境选择加载不同的 Bean 实现。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Configuration
@Profile("development")
public class DevelopmentConfig {
    // Development-specific Bean configurations
}

@Configuration
@Profile("production")
public class ProductionConfig {
    // Production-specific Bean configurations
}</code></pre>
                </div>
            </div>

            <!-- @Async -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-clock text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Async</h3>
                        <p class="mt-1 text-sm text-gray-500">异步执行</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于标识方法为异步执行的方法。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Async
public void asyncMethod() {
    // Asynchronous method implementation
}</code></pre>
                </div>
            </div>

            <!-- @Cacheable -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-database text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Cacheable</h3>
                        <p class="mt-1 text-sm text-gray-500">缓存启用</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于启用方法结果的缓存。可以缓存方法的返回值，提高方法的执行效率。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Cacheable("cacheName")
public String getCachedData() {
    // Cacheable method implementation
    return "cachedData";
}</code></pre>
                </div>
            </div>

            <!-- @ExceptionHandler -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-exclamation-triangle text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@ExceptionHandler</h3>
                        <p class="mt-1 text-sm text-gray-500">异常处理</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于定义全局的异常处理方法。可以统一处理指定类型的异常。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public String handleException(Exception ex) {
        // Exception handling logic and return a view
        return "error";
    }
}</code></pre>
                </div>
            </div>

            <!-- @Scheduled -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-calendar-alt text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@Scheduled</h3>
                        <p class="mt-1 text-sm text-gray-500">定时任务</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于定时执行方法。可以指定方法在特定的时间间隔或固定的时间点执行。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Component
public class ScheduledTask {
    @Scheduled(cron = "0 0 * * * *")
    public void executeTask() {
        // Scheduled task logic
    }
}</code></pre>
                </div>
            </div>

            <!-- @EventListener -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-bell text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@EventListener</h3>
                        <p class="mt-1 text-sm text-gray-500">事件监听</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于定义事件监听器。可以监听并处理 Spring 中的事件。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Component
public class ExampleEventListener {
    @EventListener
    public void handleEvent(ExampleEvent event) {
        // Event handling logic
    }
}</code></pre>
                </div>
            </div>

            <!-- @PostConstruct -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-play text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@PostConstruct</h3>
                        <p class="mt-1 text-sm text-gray-500">初始化方法</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于在 Bean 初始化完成后执行方法
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Component
public class ExampleComponent {

    @PostConstruct // &lt;bean init-method="init"&gt;
    public void init() {
        // Initialization logic here
        System.out.println("Component initialized");
    }

    // Other methods and members
}</code></pre>
                </div>
            </div>

            <!-- @ModelAttribute -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-puzzle-piece text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@ModelAttribute</h3>
                        <p class="mt-1 text-sm text-gray-500">模型属性</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将方法的返回值或方法参数绑定到模型中，使其在视图中可用。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Controller
public class ExampleController {
    @ModelAttribute("data")
    public ExampleObject prepareData() {
        // Generate and return data to be bound to the model
        return new ExampleObject();
    }

    @RequestMapping("/example")
    public String handleRequest(@ModelAttribute("data") ExampleObject data) {
        // Use the data from the model and return a view
        return "view";
    }
}</code></pre>
                </div>
            </div>

            <!-- @InitBinder -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-edit text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@InitBinder</h3>
                        <p class="mt-1 text-sm text-gray-500">数据绑定器</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于初始化数据绑定器，可以自定义数据绑定规则。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Controller
public class ExampleController {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // Configure custom data binding rules
        binder.registerCustomEditor(Date.class, new CustomDateEditor());
    }

    @RequestMapping("/example")
    public String handleRequest(@RequestParam("date") Date date) {
        // Handle the request using the bound data
        return "view";
    }
}</code></pre>
                </div>
            </div>

            <!-- @RequestHeader -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-heading text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@RequestHeader</h3>
                        <p class="mt-1 text-sm text-gray-500">请求头绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将 HTTP 请求头的值绑定到方法参数。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@RequestMapping("/example")
public String handleRequest(@RequestHeader("token") String token) {
    // Use the request header value and return a view
    return "view";
}</code></pre>
                </div>
            </div>

            <!-- @RequestAttribute -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-tags text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@RequestAttribute</h3>
                        <p class="mt-1 text-sm text-gray-500">请求属性绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将请求属性的值绑定到方法参数。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@RequestMapping("/example")
public String handleRequest(@RequestAttribute("attributeName") String attributeValue) {
    // Use the request attribute value and return a view
    return "view";
}</code></pre>
                </div>
            </div>

            <!-- @EnableTransactionManagement -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-exchange-alt text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@EnableTransactionManagement</h3>
                        <p class="mt-1 text-sm text-gray-500">启用事务管理</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于启用 Spring 的事务管理功能。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Configuration
@EnableTransactionManagement
public class AppConfig {
    // Configuration code
}</code></pre>
                </div>
            </div>

            <!-- @ConfigurationProperties -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-cog text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@ConfigurationProperties</h3>
                        <p class="mt-1 text-sm text-gray-500">配置属性绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    用于将配置文件中的属性值绑定到 Bean 的属性上，方便配置属性的读取和注入。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@Configuration
@ConfigurationProperties(prefix = "app")
public class AppConfig {
    private String property1;
    private int property2;

    // Getters and setters for properties
}</code></pre>
                </div>
            </div>

            <!-- @CookieValue -->
            <div class="annotation-card bg-white rounded-lg shadow-sm p-6">
                <div class="flex items-start">
                    <div class="flex-shrink-0 bg-indigo-100 rounded-md p-2">
                        <i class="fas fa-cookie text-indigo-600"></i>
                    </div>
                    <div class="ml-4">
                        <h3 class="text-lg font-bold text-gray-800">@CookieValue</h3>
                        <p class="mt-1 text-sm text-gray-500">Cookie 值绑定</p>
                    </div>
                </div>
                <p class="mt-4 text-gray-600">
                    将指定名称的 Cookie 值绑定到方法参数上。
                </p>
                <div class="mt-4 code-block p-4 rounded-md overflow-x-auto">
                    <pre class="text-sm"><code class="text-gray-200">@RequestMapping("/example")
public String handleRequest(@CookieValue("cookieName") String cookieValue) {
    // Use the cookie value and return a view
    return "view";
}</code></pre>
                </div>
            </div>
        </div>
    </div>

    <!-- 页脚 -->
    <footer class="bg-gray-900 text-white py-8">
        <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
            <div class="flex flex-col items-center">
                <div class="text-lg font-medium">技术小馆</div>
                <a href="http://www.yuque.com/jtostring" class="mt-2 text-indigo-300 hover:text-indigo-100 footer-link transition-colors duration-200">
                    <i class="fas fa-external-link-alt mr-1"></i> http://www.yuque.com/jtostring
                </a>
                <div class="mt-4 text-sm text-gray-400">
                    &copy; 2023 技术小馆. 保留所有权利.
                </div>
            </div>
        </div>
    </footer>

    <script>
        // 初始化 Mermaid
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>
```